package com.google.code.gaeom;

import java.util.List;

/**
 * @author Peter Murray <gaeom@pmurray.com>
 */
public interface LoadId<T>
{
	Multi<T, Long> ids(Long... ids);

	Multi<T, String> ids(String... ids);

	<I> Multi<T, I> ids(Iterable<I> ids);

	Single<T> id(Long id);

	Single<T> id(String id);

	interface Common<C extends Common<C>> extends LoadCommon<C>
	{
		C parent(Object parent);
	}

	interface Multi<T, I> extends Common<Multi<T, I>>, Terminator<List<T>>
	{
	}

	interface Single<T> extends Common<Single<T>>, Terminator<T>
	{
	}
}
